<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Images.java</title>
</head>
<body bgcolor="white">
<pre><tt><font color="#000000">01:</font> <i><font color="#9A1900">// QZ-BuffImagWrite/Images.java</font></i>
<font color="#000000">02:</font>  
<font color="#000000">03:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>awt<font color="#990000">.</font>Color<font color="#990000">;</font>
<font color="#000000">04:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>awt<font color="#990000">.</font>Font<font color="#990000">;</font>
<font color="#000000">05:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>awt<font color="#990000">.</font>Graphics<font color="#990000">;</font>
<font color="#000000">06:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>awt<font color="#990000">.</font>Graphics2D<font color="#990000">;</font>
<font color="#000000">07:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>awt<font color="#990000">.</font>RenderingHints<font color="#990000">;</font>
<font color="#000000">08:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>awt<font color="#990000">.</font>font<font color="#990000">.</font>FontRenderContext<font color="#990000">;</font>
<font color="#000000">09:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>awt<font color="#990000">.</font>font<font color="#990000">.</font>TextLayout<font color="#990000">;</font>
<font color="#000000">10:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>awt<font color="#990000">.</font>geom<font color="#990000">.</font>Ellipse2D<font color="#990000">;</font>
<font color="#000000">11:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>awt<font color="#990000">.</font>geom<font color="#990000">.</font>Rectangle2D<font color="#990000">;</font>
<font color="#000000">12:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>awt<font color="#990000">.</font>image<font color="#990000">.</font>BufferedImage<font color="#990000">;</font>
<font color="#000000">13:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>io<font color="#990000">.</font>File<font color="#990000">;</font>
<font color="#000000">14:</font> <b><font color="#000080">import</font></b> java<font color="#990000">.</font>io<font color="#990000">.</font>IOException<font color="#990000">;</font>
<font color="#000000">15:</font> <b><font color="#000080">import</font></b> javax<font color="#990000">.</font>imageio<font color="#990000">.</font>ImageIO<font color="#990000">;</font>
<font color="#000000">16:</font> <b><font color="#000080">import</font></b> javax<font color="#990000">.</font>swing<font color="#990000">.</font>JFrame<font color="#990000">;</font>
<font color="#000000">17:</font> 
<font color="#000000">18:</font> <b><font color="#0000FF">public</font></b> <b><font color="#0000FF">class</font></b> <font color="#009900">Images</font> <font color="#FF0000">{</font>
<font color="#000000">19:</font>     <b><font color="#0000FF">public</font></b> <b><font color="#0000FF">static</font></b> <font color="#009900">void</font> <b><font color="#000000">main</font></b><font color="#990000">(</font>String<font color="#990000">[]</font> args<font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">20:</font>         <font color="#009900">int</font> w <font color="#990000">=</font> <font color="#993399">600</font><font color="#990000">;</font> <i><font color="#9A1900">// &lt;-- should be divisible by 4</font></i>
<font color="#000000">21:</font>         <font color="#009900">int</font> h <font color="#990000">=</font> <font color="#993399">400</font><font color="#990000">;</font> <i><font color="#9A1900">// &lt;-- should be divisible by 4</font></i>
<font color="#000000">22:</font>         <font color="#009900">int</font> first  <font color="#990000">=</font> <font color="#993399">0xFF660066</font><font color="#990000">,</font> <i><font color="#9A1900">// purple</font></i>
<font color="#000000">23:</font>             second <font color="#990000">=</font> <font color="#993399">0xFF000000</font><font color="#990000">,</font> <i><font color="#9A1900">// black</font></i>
<font color="#000000">24:</font>             circle <font color="#990000">=</font> <font color="#993399">0xFFFFFF00</font><font color="#990000">,</font> <i><font color="#9A1900">// yellow</font></i>
<font color="#000000">25:</font>             letter <font color="#990000">=</font> <font color="#993399">0xFF660000</font><font color="#990000">;</font> <i><font color="#9A1900">// dark red</font></i>
<font color="#000000">26:</font>         BufferedImage im <font color="#990000">=</font>
<font color="#000000">27:</font>                 <b><font color="#0000FF">new</font></b> <b><font color="#000000">BufferedImage</font></b><font color="#990000">(</font>w<font color="#990000">,</font>h<font color="#990000">,</font>
<font color="#000000">28:</font>                         BufferedImage<font color="#990000">.</font>TYPE_INT_ARGB<font color="#990000">);</font>
<font color="#000000">29:</font> 
<font color="#000000">30:</font>         <i><font color="#9A1900">// Just to show that we can set</font></i>
<font color="#000000">31:</font>         <i><font color="#9A1900">// any pixel or region of pixels</font></i>
<font color="#000000">32:</font>         <font color="#009900">int</font><font color="#990000">[]</font> square <font color="#990000">=</font> <b><font color="#0000FF">new</font></b> <font color="#009900">int</font><font color="#990000">[(</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">)*(</font>h<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">)];</font>
<font color="#000000">33:</font>         <b><font color="#0000FF">for</font></b> <font color="#990000">(</font><font color="#009900">int</font> i <font color="#990000">=</font> <font color="#993399">0</font><font color="#990000">;</font> i <font color="#990000">&lt;</font> <font color="#990000">(</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">)*(</font>h<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">);</font> <font color="#990000">++</font>i<font color="#990000">)</font>
<font color="#000000">34:</font>             square<font color="#990000">[</font>i<font color="#990000">]</font> <font color="#990000">=</font> first<font color="#990000">;</font>
<font color="#000000">35:</font>         im<font color="#990000">.</font><b><font color="#000000">setRGB</font></b><font color="#990000">(</font><font color="#993399">0</font><font color="#990000">,</font><font color="#993399">0</font><font color="#990000">,</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>h<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>square<font color="#990000">,</font><font color="#993399">0</font><font color="#990000">,</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">);</font>
<font color="#000000">36:</font>         im<font color="#990000">.</font><b><font color="#000000">setRGB</font></b><font color="#990000">(</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>h<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>h<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>square<font color="#990000">,</font><font color="#993399">0</font><font color="#990000">,</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">);</font>
<font color="#000000">37:</font>         <b><font color="#0000FF">for</font></b> <font color="#990000">(</font><font color="#009900">int</font> i <font color="#990000">=</font> <font color="#993399">0</font><font color="#990000">;</font> i <font color="#990000">&lt;</font> <font color="#990000">(</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">)*(</font>h<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">);</font> <font color="#990000">++</font>i<font color="#990000">)</font>
<font color="#000000">38:</font>             square<font color="#990000">[</font>i<font color="#990000">]</font> <font color="#990000">=</font> second<font color="#990000">;</font>
<font color="#000000">39:</font>         im<font color="#990000">.</font><b><font color="#000000">setRGB</font></b><font color="#990000">(</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font><font color="#993399">0</font><font color="#990000">,</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>h<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>square<font color="#990000">,</font><font color="#993399">0</font><font color="#990000">,</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">);</font>
<font color="#000000">40:</font>         im<font color="#990000">.</font><b><font color="#000000">setRGB</font></b><font color="#990000">(</font><font color="#993399">0</font><font color="#990000">,</font>h<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>h<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>square<font color="#990000">,</font><font color="#993399">0</font><font color="#990000">,</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">);</font>
<font color="#000000">41:</font> 
<font color="#000000">42:</font>         <i><font color="#9A1900">// we can also draw figures and write strings</font></i>
<font color="#000000">43:</font>         Graphics2D g2 <font color="#990000">=</font> <font color="#990000">(</font>Graphics2D<font color="#990000">)</font>im<font color="#990000">.</font><b><font color="#000000">getGraphics</font></b><font color="#990000">();</font>
<font color="#000000">44:</font>         <b><font color="#000000">setAntialiasing</font></b><font color="#990000">(</font>g2<font color="#990000">);</font>
<font color="#000000">45:</font>         g2<font color="#990000">.</font><b><font color="#000000">setColor</font></b><font color="#990000">(</font><b><font color="#0000FF">new</font></b> <b><font color="#000000">Color</font></b><font color="#990000">(</font>circle<font color="#990000">));</font>
<font color="#000000">46:</font>         g2<font color="#990000">.</font><b><font color="#000000">fill</font></b><font color="#990000">(</font><b><font color="#0000FF">new</font></b> Ellipse2D<font color="#990000">.</font><b><font color="#000000">Double</font></b><font color="#990000">(</font>w<font color="#990000">/</font><font color="#993399">4</font><font color="#990000">,</font>h<font color="#990000">/</font><font color="#993399">4</font><font color="#990000">,</font>w<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">,</font>h<font color="#990000">/</font><font color="#993399">2</font><font color="#990000">));</font>
<font color="#000000">47:</font> 
<font color="#000000">48:</font>         g2<font color="#990000">.</font><b><font color="#000000">setColor</font></b><font color="#990000">(</font><b><font color="#0000FF">new</font></b> <b><font color="#000000">Color</font></b><font color="#990000">(</font>letter<font color="#990000">));</font>
<font color="#000000">49:</font>         Font font <font color="#990000">=</font> <b><font color="#0000FF">new</font></b> <b><font color="#000000">Font</font></b><font color="#990000">(</font><font color="#FF0000">"Monospaced"</font><font color="#990000">,</font>Font<font color="#990000">.</font>BOLD<font color="#990000">,</font>
<font color="#000000">50:</font>                               Math<font color="#990000">.</font><b><font color="#000000">min</font></b><font color="#990000">(</font>w<font color="#990000">/</font><font color="#993399">4</font><font color="#990000">,</font>h<font color="#990000">/</font><font color="#993399">4</font><font color="#990000">));</font>
<font color="#000000">51:</font>         g2<font color="#990000">.</font><b><font color="#000000">setFont</font></b><font color="#990000">(</font>font<font color="#990000">);</font>
<font color="#000000">52:</font>         FontRenderContext frc <font color="#990000">=</font> g2<font color="#990000">.</font><b><font color="#000000">getFontRenderContext</font></b><font color="#990000">();</font>
<font color="#000000">53:</font>         String s <font color="#990000">=</font> <font color="#FF0000">"</font><font color="#CC33CC">\u</font><font color="#FF0000">0391</font><font color="#CC33CC">\u</font><font color="#FF0000">03a9"</font><font color="#990000">;</font>
<font color="#000000">54:</font>         TextLayout layout <font color="#990000">=</font> <b><font color="#0000FF">new</font></b> <b><font color="#000000">TextLayout</font></b><font color="#990000">(</font>s<font color="#990000">,</font>font<font color="#990000">,</font>frc<font color="#990000">);</font>
<font color="#000000">55:</font>         Rectangle2D r <font color="#990000">=</font> layout<font color="#990000">.</font><b><font color="#000000">getBounds</font></b><font color="#990000">();</font>
<font color="#000000">56:</font>         layout<font color="#990000">.</font><b><font color="#000000">draw</font></b><font color="#990000">(</font>
<font color="#000000">57:</font>             g2<font color="#990000">,(</font><font color="#009900">float</font><font color="#990000">)(</font>w<font color="#990000">/</font><font color="#993399">2.0</font><font color="#990000">+</font>r<font color="#990000">.</font><b><font color="#000000">getX</font></b><font color="#990000">()-</font>r<font color="#990000">.</font><b><font color="#000000">getWidth</font></b><font color="#990000">()/</font><font color="#993399">2.0</font><font color="#990000">),</font>
<font color="#000000">58:</font>                <font color="#990000">(</font><font color="#009900">float</font><font color="#990000">)(</font>h<font color="#990000">/</font><font color="#993399">2.0</font><font color="#990000">-</font>r<font color="#990000">.</font><b><font color="#000000">getHeight</font></b><font color="#990000">()/</font><font color="#993399">2.0</font><font color="#990000">-</font>r<font color="#990000">.</font><b><font color="#000000">getY</font></b><font color="#990000">()));</font>
<font color="#000000">59:</font> 
<font color="#000000">60:</font>         <i><font color="#9A1900">// ...and save to a file</font></i>
<font color="#000000">61:</font>         String<font color="#990000">[]</font> graphFormats <font color="#990000">=</font> <font color="#FF0000">{</font><font color="#FF0000">"png"</font><font color="#990000">,</font><font color="#FF0000">"gif"</font><font color="#990000">,</font><font color="#FF0000">"jpg"</font><font color="#FF0000">}</font><font color="#990000">;</font>
<font color="#000000">62:</font>         <b><font color="#0000FF">try</font></b> <font color="#FF0000">{</font>
<font color="#000000">63:</font>             <b><font color="#0000FF">for</font></b> <font color="#990000">(</font>String f <font color="#990000">:</font> graphFormats<font color="#990000">)</font>
<font color="#000000">64:</font>                 ImageIO<font color="#990000">.</font><b><font color="#000000">write</font></b><font color="#990000">(</font>im<font color="#990000">,</font>f<font color="#990000">,</font><b><font color="#0000FF">new</font></b> <b><font color="#000000">File</font></b><font color="#990000">(</font><font color="#FF0000">"fig."</font><font color="#990000">+</font>f<font color="#990000">));</font>
<font color="#000000">65:</font>         <font color="#FF0000">}</font> <b><font color="#0000FF">catch</font></b><font color="#990000">(</font>IOException err<font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">66:</font>             System<font color="#990000">.</font>err<font color="#990000">.</font><b><font color="#000000">printf</font></b><font color="#990000">(</font><font color="#FF0000">"Problems..."</font><font color="#990000">);</font>
<font color="#000000">67:</font>             System<font color="#990000">.</font><b><font color="#000000">exit</font></b><font color="#990000">(</font><font color="#993399">1</font><font color="#990000">);</font>
<font color="#000000">68:</font>         <font color="#FF0000">}</font>
<font color="#000000">69:</font> 
<font color="#000000">70:</font> 
<font color="#000000">71:</font>         JFrame frame <font color="#990000">=</font> <b><font color="#0000FF">new</font></b> <b><font color="#000000">JFrame</font></b><font color="#990000">(</font><font color="#FF0000">"Graphics files"</font><font color="#990000">);</font>
<font color="#000000">72:</font>         frame<font color="#990000">.</font><b><font color="#000000">setDefaultCloseOperation</font></b><font color="#990000">(</font>JFrame<font color="#990000">.</font>EXIT_ON_CLOSE<font color="#990000">);</font>
<font color="#000000">73:</font>         frame<font color="#990000">.</font><b><font color="#000000">add</font></b><font color="#990000">(</font><b><font color="#0000FF">new</font></b> <b><font color="#000000">MyPanel</font></b><font color="#990000">(</font>im<font color="#990000">));</font>
<font color="#000000">74:</font>         frame<font color="#990000">.</font><b><font color="#000000">pack</font></b><font color="#990000">();</font>
<font color="#000000">75:</font>         frame<font color="#990000">.</font><b><font color="#000000">setVisible</font></b><font color="#990000">(</font><b><font color="#0000FF">true</font></b><font color="#990000">);</font>
<font color="#000000">76:</font>     <font color="#FF0000">}</font>
<font color="#000000">77:</font> 
<font color="#000000">78:</font>     <b><font color="#0000FF">public</font></b> <b><font color="#0000FF">static</font></b> <font color="#009900">void</font> <b><font color="#000000">setAntialiasing</font></b><font color="#990000">(</font>Graphics g<font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#000000">79:</font>         Graphics2D g2 <font color="#990000">=</font> <font color="#990000">(</font>Graphics2D<font color="#990000">)</font>g<font color="#990000">;</font>
<font color="#000000">80:</font>         g2<font color="#990000">.</font><b><font color="#000000">setRenderingHint</font></b><font color="#990000">(</font>
<font color="#000000">81:</font>             RenderingHints<font color="#990000">.</font>KEY_ANTIALIASING<font color="#990000">,</font>
<font color="#000000">82:</font>             RenderingHints<font color="#990000">.</font>VALUE_ANTIALIAS_ON<font color="#990000">);</font>
<font color="#000000">83:</font>         g2<font color="#990000">.</font><b><font color="#000000">setRenderingHint</font></b><font color="#990000">(</font>
<font color="#000000">84:</font>             RenderingHints<font color="#990000">.</font>KEY_TEXT_ANTIALIASING<font color="#990000">,</font>
<font color="#000000">85:</font>             RenderingHints<font color="#990000">.</font>VALUE_TEXT_ANTIALIAS_ON<font color="#990000">);</font>
<font color="#000000">86:</font>     <font color="#FF0000">}</font>
<font color="#000000">87:</font> <font color="#FF0000">}</font></tt></pre>
</body>
</html>
